import java.util.ArrayList;
import java.util.Arrays;

public class shuzu {
    //二维数组遍历的for each写法
    public static void main(String[] args) {
        int[][] array = {
                {1,2,3,4},
                {5,6,7,8}
        };
        //array里存放的是地址tmp
        for (int[] tmp : array) {
            //拿到引用指向的对象
            for (int x : tmp) {
                System.out.print(x+" ");
            }
            System.out.println();
        }
        System.out.println(Arrays.deepToString(array));
        int[][] array2 = new int[2][];
        System.out.println(Arrays.toString(array2));
    }
//    public static void main(String[] args) {
//        int[] arr = {2,9,8,6,4,1};
//        bubblesort(arr);
//        System.out.println(Arrays.toString(arr));
//    }
//    //五个数比较四趟 i代表趟数从0开始到arr.length-1
//    public static void bubblesort(int[] arr) {
//        for (int i = 0; i < arr.length - 1; i++) {
//            boolean flg = false;
//            for (int j = 0; j < arr.length-i-1; j++) {
//                if (arr[j] > arr[j+1]){
//                    int tmp = arr[j];
//                    arr[j] = arr[j+1];
//                    arr[j+1] = tmp;
//                    flg = true;
//                }
//            }
//            if(!flg){
//                return;//这一趟下来都没有交换可以直接return了，已经有序
//            }
//        }
//    }
//    public static void main(String[] args) {
//        int[][] arr ={
//                {1,2,3,4},
//                {5,6,7,8},
//                {9,10,11,12}
//        };
//        for (int row = 0; row < arr.length; row++) {
//            for (int col = 0; col < arr[row].length; col++) {
//                System.out.printf("%d\t",arr[row][col]);
//            }
//            System.out.println();
//        }
//    }
//    //数组逆序
//    public static void main(String[] args) {
//        int[] arr = {1,2,3,4};
//        reverse(arr);
//        System.out.println(Arrays.toString(arr));
//    }
//
//    public static void reverse(int[] arr) {
//        int left = 0;
//        int right = arr.length-1;
//        while (left < right){
//            int tmp = arr[left];
//            arr[left] = arr[right];
//            arr[right] = tmp;
//            left++;
//            right--;
//        }
//    }


//    //冒泡排序
//    public static void main(String[] args) {
//        int[] arr = {2,9,8,6,4,1};
//        Arrays.sort(arr);
////        bubblesort(arr);
//        System.out.println(Arrays.toString(arr));
//    }

//    public static void bubblesort(int[] arr) {
//        for (int i = 0; i < arr.length; i++) {
//            for (int j = 0; j < arr.length-i-1; j++) {
//                if (arr[j] > arr[j+1]){
//                    int tmp = arr[j];
//                    arr[j] = arr[j+1];
//                    arr[j+1] = tmp;
//                }
//            }
//        }
//    }

//    public static void main(String[] args) {
//        //二分查找
//        int[]arr = {1,2,3,4,5,6};
//        System.out.println(binarysearch(arr,3));
//    }
//
//    public static int binarysearch(int[] arr,int tofind) {
//        int left = 0;
//        int right = arr.length - 1;
//        while (left <= right){
//            int mid = (left+right)/2;
//            if (arr[mid] < tofind){
//                left = mid +1;
//            }else if (arr[mid] > tofind){
//                right = mid -1;
//            }else{
//                return mid;
//            }
//        }
//        return -1;
    }
//    //顺序查找
//    public static void main(String[] args) {
//        int[] arr = {1,2,3,10,5,6};
//        System.out.println(find(arr,10));
//    }
//
//    public static int find(int[] arr,int n) {
//        for (int i = 0; i < arr.length; i++) {
//            if (arr[i] == n){
//                return i;
//            }
//        }
//        return -1;
//    }


//    //给定一个整型数组，求平均值
//    public static void main(String[] args) {
//        int[] arr = {1,2,3,4,5,6};
//        System.out.println(average(arr));
//    }
//
//    public static double average(int[] arr) {
//        int sum = 0;
//        //用for each的写法来遍历
//        for (int i : arr) {
//            sum += i;
//        }
//        double ave = (double) sum/(double) arr.length;
//        return ave;
//    }


//    public static void main(String[] args) {
//        int[] arr = {1,2,3,4,5,6};
//        int[] newArr = arr;
//        newArr[0] = 10;
//        System.out.println("newArr: " + Arrays.toString(arr));
//        arr[0] = 1;
//        newArr = Arrays.copyOf(arr, arr.length);
//        System.out.println("newArr: " + Arrays.toString(newArr));
//        arr[0] = 10;
//        System.out.println("newArr: " + Arrays.toString(newArr));
//        //[2,4)
//        int[] newArr2 = Arrays.copyOfRange(arr, 2, 4);
//        System.out.println("newArr2: " + Arrays.toString(newArr2));
//    }
//    //数组转字符串
//    public static void main(String[] args) {
//        int[] arr = {1, 2, 3, 4, 5, 6};
//        String newarray = Arrays.toString(arr);
//        System.out.println(newarray);
//    }
//}

    ////获取斐波那契数列的前N项
//    public static void main(String[] args) {
//        int[] arr = fib(5);
//        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
//        }
//    }
//    public static int[] fib(int n){
//        if (n<=0) return null;
//        int[] array = new int[n];
//        array[0]=array[1]=1;
//        for (int i = 2; i < n; i++) {
//            array[i] = array[i-2]+ array[i-1];
//        }
//        return array;
//    }


//    public static void main(String[] args) {
//        int[] array1 = new int[3];
//        array1[0] = 10;
//        array1[1] = 20;
//        array1[2] = 30;
//        int[] array2 = new int[]{1,2,3,4,5};
//        array2[0] = 100;
//        array2[1] = 200;
//        array1 = array2;
//        array1[2] = 300;
//        array1[3] = 400;
//        array2[4] = 500;
//        for (int i = 0; i < array2.length; i++) {
//            System.out.println(array1[i]);
//
//        }
//    }

